// 引入express框架
const express = require('express');
// 引入系统模块path
const path = require('path');
// 引入数据库模块
require('./model/connect');
// 引入body-parser模块
const bodyParser = require('body-parser');
// 引入express-session
const session = require('express-session');
// 引入art-template 
const template = require('art-template');
// 引入第三方日期格式化模块
const dateformat = require('dateformat');
// 在开发环境中，将日志信息打印到控制台
const morgan = require('morgan');
// 导入config模块
const config = require('config');
// 创建网站APP
const app = express();
// 处理post请求参数
app.use(bodyParser.urlencoded({extended: false}));
// 配置session
app.use(session({
  secret: 'secret key', 
  resave: false, 
  saveUninitialized: false,
  cookie: {
    maxAge: 24 * 60 * 60 * 1000,// 最大过期时间
  }
}));
// 告诉express框架模板的所在位置
app.set('views', path.join(__dirname, 'views'));
// 告诉express框架模板的默认后缀
app.set('view engine', 'art');
// 当渲染后缀为art的模板时，所使用的的模板引擎是什么
app.engine('art', require('express-art-template'));
// 给art-template配置函数
template.defaults.imports.dateformat = dateformat;
// 开放静态资源文件
app.use(express.static(path.join(__dirname, 'public')));

// console.log(config.get('title'));
app.locals.webCNTitle = config.get('webCNTitle');
app.locals.webENTitle = config.get('webENTitle');
// 获取系统环境变量 process.env.NODE_ENV
if(process.env.NODE_ENV == 'development') {
  console.log('当前处于开发环境');
  // 在开发环境中，将客户端发送到服务器端的请求信息打印到控制台中
  app.use(morgan('dev'));
}else {
  console.log('当前处于生产环境');
}

// 拦截请求，判断用户的登录状态
app.use('/admin', require('./middleware/loginGuard'));
// 引入路由模块
const home = require('./route/home');
const admin = require('./route/admin');
app.use('/home', home);
app.use('/admin', admin);
app.use((err, req, res, next) => {
  const result = JSON.parse(err);
  let arr = [];
  for(let attr in result){
    if(attr == 'path')continue;
    arr.push(attr + "=" + result[attr]);
  }
  let params = arr.join('&');
  res.redirect(`${result.path}?${params}`);
})
app.listen(80);
console.log('网站服务器启动成功,请访问localhost');
